package org.httpkit.client; import org.httpkit.BytesInputStream; import org.httpkit.HttpMethod; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.net.ssl.SSLEngine; import java.io.IOException; import java.util.Map; import java.util.TreeMap; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * Created with IntelliJ IDEA. * User: feng * Date: 4/14/13 * Time: 10:22 AM * To change this template use File | Settings | File Templates. */ public class HttpsClientTest { public static final String AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31"; private static Logger logger = LoggerFactory.getLogger(HttpsClientTest.class); public static void main(String[] args) throws IOException, InterruptedException { HttpClient client = new HttpClient(); String[] urls = new String[]{ "https://localhost:9898/spec", // "https://localhost:9898/file?l=121021" // "https://github.com/http-kit/http-kit", // "https://github.com/shenfeng/FrameworkBenchmarks" }; ExecutorService pool = Executors.newCachedThreadPool(); for (String url : urls) { final CountDownLatch cd = new CountDownLatch(1); SSLEngine engine = SslContextFactory.getClientContext().createSSLEngine(); RequestConfig cfg = new RequestConfig(HttpMethod.POST, null, null, 40000, 40000, -1, null, false); TreeMap<String, Object> headers = new TreeMap<String, Object>(); for (int i = 0; i < 33; i++) { headers.put("X-long-header" + i, AGENT + AGENT + AGENT + AGENT); } headers.put("User-Agent", AGENT); StringBuilder body = new StringBuilder(16 * 1024); for (int i = 0; i < 16 * 1024; ++i) { body.append(i); } client.exec(url, cfg, null, new RespListener(new IResponseHandler() { public void onSuccess(int status, Map<String, Object> headers, Object body) { int length = body instanceof String ? ((String) body).length() : ((BytesInputStream) body).available(); System.out.println(body); logger.info("{}, {}, {}", status, headers, length); cd.countDown(); } public void onThrowable(Throwable t) { logger.error("error", t); cd.countDown(); } }, IFilter.ACCEPT_ALL, pool, 1)); cd.await(); } } }